/**
 * AI 分析格式化工具测试文件（CommonJS 版本）
 */

// 解析 AI 分析文本
function parseAiAnalysis(text) {
  const result = {
    symbol: '',
    timeframe: '',
    trend: {
      direction: '',
      description: '',
      reasons: []
    },
    currentPrice: {
      price: '',
      change: '',
      status: ''
    },
    tradingAdvice: {
      direction: '',
      plans: []
    },
    riskWarnings: []
  }

  // 提取交易对和周期
  const symbolMatch = text.match(/###([A-Z]+\/[A-Z]+)(\d+[^\s]+)周期分析/)
  if (symbolMatch) {
    result.symbol = symbolMatch[1]
    result.timeframe = symbolMatch[2]
  }

  // 提取趋势信息
  const trendMatch = text.match(/####趋势：([^（]+)（([^）]+)）/)
  if (trendMatch) {
    result.trend.direction = trendMatch[1].trim()
    result.trend.description = trendMatch[2].trim()
  }

  // 提取趋势理由
  const reasonsSection = text.match(/理由：([\s\S]*?)####现价/)
  if (reasonsSection) {
    const reasonsText = reasonsSection[1]
    const reasonMatches = reasonsText.matchAll(/-\*\*([^*]+)\*\*：((?:(?!-\*\*).)+)/g)
    for (const match of reasonMatches) {
      result.trend.reasons.push({
        title: match[1].trim(),
        content: match[2].trim()
      })
    }
  }

  // 提取现价信息
  const priceMatch = text.match(/####现价：([\d.]+)（\*\*([^*]+)\*\*([^）]+)）/)
  if (priceMatch) {
    result.currentPrice.price = priceMatch[1]
    result.currentPrice.change = priceMatch[2]
    result.currentPrice.status = priceMatch[3].trim()
  }

  // 提取交易建议方向
  const directionMatch = text.match(/-\*\*方向\*\*：([^-\n]+)/)
  if (directionMatch) {
    result.tradingAdvice.direction = directionMatch[1].trim()
  }

  // 提取交易方案
  const planPattern = /\d+\.\*\*方案(\d+)（([^）]+)）\*\*：([\s\S]*?)(?=\d+\.\*\*方案|####风险提示|$)/g
  const planMatches = text.matchAll(planPattern)
  
  for (const planMatch of planMatches) {
    const planNum = planMatch[1]
    const planType = planMatch[2]
    const planContent = planMatch[3]

    const plan = {
      id: parseInt(planNum),
      type: planType,
      entryPrice: '',
      targets: [],
      stopLoss: '',
      stopLossReason: '',
      trigger: ''
    }

    // 提取入场价
    const entryMatch = planContent.match(/-\*\*入场价\*\*:([^\n-]+)/)
    if (entryMatch) {
      let entryText = entryMatch[1].trim()
      entryText = entryText.replace(/（[^）]*）/g, '')
      plan.entryPrice = entryText.trim()
    }

    // 提取所有目标价位
    const targetMatches = planContent.matchAll(/-\*\*目标(\d+)（([^）]+)）\*\*:([^-]+?)(?=-\*\*(?:目标|止损)|$)/g)
    for (const targetMatch of targetMatches) {
      plan.targets.push({
        level: parseInt(targetMatch[1]),
        time: targetMatch[2],
        price: targetMatch[3].trim()
      })
    }

    // 提取止损价
    const stopMatch = planContent.match(/-\*\*止损价\*\*:([^（]+)（([^）]+)）/)
    if (stopMatch) {
      plan.stopLoss = stopMatch[1].trim()
      plan.stopLossReason = stopMatch[2].trim()
    }

    // 提取触发条件
    const triggerMatch = planContent.match(/-\*\*触发条件\*\*:([^。]+。)/)
    if (triggerMatch) {
      plan.trigger = triggerMatch[1].trim()
    }

    result.tradingAdvice.plans.push(plan)
  }

  // 提取风险提示
  const riskSection = text.match(/####风险提示：([\s\S]*?)(?=（如需|$)/)
  if (riskSection) {
    const riskText = riskSection[1]
    const riskMatches = riskText.matchAll(/\d+\.\*\*([^*]+)\*\*：([^。]+。)/g)
    for (const match of riskMatches) {
      result.riskWarnings.push({
        title: match[1].trim(),
        content: match[2].trim()
      })
    }
  }

  return result
}

// 测试数据
const rawAnalysisText = `###ETH/USDT1小时周期分析####趋势：下跌（短期震荡下行）理由：-**价格走势**：最新价格为3180.64，较前一小时3193.82略微下降（约-0.41%）。-**价格行为**：从近期高点（3500以上）大幅回落，目前处于下行通道内，短期反弹力度较弱。-**技术形态**：近期形成明显的下降趋势线，支撑位在3100-3120附近，压力位在3200-3220附近。####现价：3180.64（**-0.41%**震荡下行）####交易建议：-**方向**：观望或短线轻仓**做空**-**入场方案**：1.**方案1（短线做空）**：-**入场价**:3180-3200-**目标1（3小时）**:3150-**目标2（5小时）**:3120-**目标3（7小时）**:3100-**目标4（10小时）**:3080-**止损价**:3220（突破强阻力）-**触发条件**:若价格反弹至3200受阻并出现回调K线形态（如黄昏星、射击之星）。2.**方案2（低吸做多）**：-**入场价**:3100-3120（支撑区）-**目标1（3小时）**:3150-**目标2（5小时）**:3180-**目标3（7小时）**:3200-**止损价**:3080（跌破关键支撑）-**触发条件**:价格触及支撑区后形成看涨吞没或锤子线。####风险提示：1.**短线快速反转**：ETH波动性较大，可能因市场情绪突变而快速反弹。2.**支撑失效风险**：若3100跌破可能继续下探3050甚至3000。3.**宏观因素干扰**：SEC政策、大额链上转账等可能引发异常波动。（如需更具体的MACD/RSI等指标分析，请补充说明）`

console.log('🔄 开始测试 AI 分析格式化工具...\n')

// 解析
const parsedData = parseAiAnalysis(rawAnalysisText)

// 输出 JSON
console.log('📄 解析结果（JSON 格式）:')
console.log('='.repeat(60))
console.log(JSON.stringify(parsedData, null, 2))
console.log('\n')

// 输出格式化文本
console.log('📝 格式化文本输出:')
console.log('='.repeat(60))
console.log(`📊 ${parsedData.symbol} ${parsedData.timeframe}周期分析\n`)

console.log('📈 趋势分析')
console.log(`方向: ${parsedData.trend.direction}`)
console.log(`描述: ${parsedData.trend.description}`)
console.log('理由:')
parsedData.trend.reasons.forEach((reason, index) => {
  console.log(`  ${index + 1}. ${reason.title}: ${reason.content}`)
})
console.log('')

console.log('💰 现价信息')
console.log(`价格: ${parsedData.currentPrice.price}`)
console.log(`涨跌: ${parsedData.currentPrice.change}`)
console.log(`状态: ${parsedData.currentPrice.status}`)
console.log('')

console.log('💡 交易建议')
console.log(`方向: ${parsedData.tradingAdvice.direction}`)
console.log('')

parsedData.tradingAdvice.plans.forEach(plan => {
  console.log(`方案 ${plan.id} - ${plan.type}`)
  console.log(`  入场价: ${plan.entryPrice}`)
  console.log(`  目标价位:`)
  plan.targets.forEach(target => {
    console.log(`    • 目标${target.level} (${target.time}): ${target.price}`)
  })
  console.log(`  止损价: ${plan.stopLoss} (${plan.stopLossReason})`)
  console.log(`  触发条件: ${plan.trigger}`)
  console.log('')
})

console.log('⚠️  风险提示')
parsedData.riskWarnings.forEach((risk, index) => {
  console.log(`${index + 1}. ${risk.title}: ${risk.content}`)
})

console.log('\n' + '='.repeat(60))
console.log('✅ 测试完成！')
console.log('\n📦 数据结构说明:')
console.log('- symbol: 交易对')
console.log('- timeframe: 时间周期')
console.log('- trend: 趋势分析（方向、描述、理由）')
console.log('- currentPrice: 现价信息（价格、涨跌、状态）')
console.log('- tradingAdvice: 交易建议（方向、方案列表）')
console.log('- riskWarnings: 风险提示列表')

